package com.javatest2;

import java.util.Arrays;

/**
 * @program: item_02
 * @description: 你有两个数组 nums1和nums2（互不重复），其中nums1是nums2的子集。
 * 在nums2的相应位置找到nums1所有元素的下一个更大数字。
 * nums1中的数字x的下一个更大数字是nums2中x右边第一个更大的数字。 如果它不存在，则为此数字输出-1。
 * <p>
 * 输入: nums1 = [4,1,2], nums2 = [1,3,4,2].
 * 输出: [-1,3,-1]
 * 解释:
 * 对于第一个数组中的数字4，在第二个数组中找不到下一个更大的数字，因此输出-1。
 * 对于第一个数组中的数字1，第二个数组中的下一个更大数字是3。
 * 对于第一个数组中的数字2，第二个数组中没有下一个更大的数字，因此输出-1。
 * <p>
 * 输入: nums1 = [2,4], nums2 = [1,2,3,4].
 * 输出: [3,-1]
 * 解释:
 * 对于第一个数组中的数字2，第二个数组中的下一个更大数字是3。
 * 对于第一个数组中的数字4，第二个数组中没有下一个更大的数字，因此输出-1。
 * @author: LL
 * @create: 2021-02-09 10:02
 */
public class Subject16 {

    public static int[] test(final int[] a, final int[] b) {
        final int[] c = new int[a.length];
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < b.length; j++) {
                if (a[i] == b[j]) {
                    if (j == b.length - 1) {
                        c[i] = -1;
                    } else {
                        c[i] = a[i] > b[j + 1] ? -1 : b[j + 1];
                    }
                }
            }
        }
        return c;
    }

    public static void main(final String[] args) {
        final int[] a = {2, 4, 1, 6};
        final int[] b = {2, 5, 7, 1, 0, 9, 4, 8, 6};

        final int[] test = test(a, b);
        System.out.println(Arrays.toString(test));
    }

}
